package ligne2vie.topos.client.service;

import ligne2vie.topos.shared.bo.TGoogleUser;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * The interface {@link UserServiceAsync} defines all the methods required to manage users.
 * 
 * @author thuguerre
 * @since 1.0.0
 */
public interface UserServiceAsync {

	void createLoginURL(String destinationURL, AsyncCallback<String> callback);

	void createLoginURL(String destinationURL, String authDomain, AsyncCallback<String> callback);

	void createLogoutURL(String destinationURL, AsyncCallback<String> callback);

	void createLogoutURL(String destinationURL, String authDomain, AsyncCallback<String> callback);

	void isUserAdmin(AsyncCallback<Boolean> callback);

	void isUserLoggedIn(AsyncCallback<Boolean> callback);

	void getCurrentUser(AsyncCallback<TGoogleUser> callback);

}
